#include "heroplane.h"
#include "config.h"

HeroPlane::HeroPlane()
{
    // 初始化加载飞机图片资源
    m_Plane.load(HERO_PATH);

    // 初始化坐标
    m_X = GAME_WIDTH * 0.5 - m_Plane.width()*0.5;
    m_Y = GAME_HEIGHT - m_Plane.height()*0.5 - 100;

    // 初始化矩形框 碰撞检测用
    m_Rect.setWidth(m_Plane.width());
    m_Rect.setHeight(m_Plane.height());
    m_Rect.moveTo(m_X, m_Y);

    // 初始化发射间隔记录
    m_recorder = 0;
}

void HeroPlane::shoot()
{
    // 累加时间间隔记录变量
    m_recorder++;

    // 判断如果记录数字未达到发射间隔，直接return
    if (m_recorder < BULLET_INTERVAL)
        return;

    // 到达发射时间处理
    // 重置发射时间间隔记录
    m_recorder = 0;

    // 发射子弹
    for (int i = 0; i < BULLET_NUM; i++)
    {
        if (m_bullets[i].m_Free)
        {
            // 如果是空闲子弹进行发射
            m_bullets[i].m_Free = false;
            // 设置发射的子弹坐标
            m_bullets[i].m_X = m_X + m_Rect.width() * 0.5 - 10;
            m_bullets[i].m_Y = m_Y - 25;
            break;
        }
    }
}

void HeroPlane::setPosition(int x, int y)
{
    m_X = x;
    m_Y = y;
    m_Rect.moveTo(m_X, m_Y);
}
